// pages/goos_deta/index.js
import { request } from "../../request/request.js"
Page({

    /**
     * 页面的初始数据
     */
    data: {
        //保存需用到的商品详情的对象
        goodsObj: {},
        //保存商品对象的所有数据
        goodsObjAll: {},
        //判断当前商品是否收藏bool值  默认不收藏
        isShoucang: false
    },

    /**
     * 生命周期函数--监听页面加载
     */
    async onLoad(options) {
        // console.log(options.goods_id);
        const data = await request({ url: '/goods/detail', data: { goods_id: options.goods_id } });
        this.setData({
            goodsObj: {
                //只用到了返回过来的四个数据
                goods_price: data.goods_price,
                goods_name: data.goods_name,
                goods_introduce: data.goods_introduce,
                pics: data.pics,
                goods_id: data.goods_id
            },
            goodsObjAll: data
        });
    },
    //onshow  用来获取收藏信息
    async onShow() {
        let pages = getCurrentPages();
        // 2 数组中 索引最大的页面就是当前页面
        let currentPage = pages[pages.length - 1];
        // 3 获取url上的type参数
        const { goods_id } = currentPage.options;
        //判断 这个这个商品在缓存中的收藏数组中是否存在  //存在则另当前商品收藏
        let shoucangList = wx.getStorageSync("shoucangList") || []; //这是一个数组,数组里面有不同的商品对象
        let isExit = shoucangList.some(element => goods_id == element.goods_id); //如果存在就是true
        // console.log(isExit);
        //保存页面收藏状态
        this.setData({
            isShoucang: isExit
        });
    },
    //收藏按钮被点击的时候触发的函数
    handleShoucangTap() {
        //获取新的收藏状态
        let isShoucang = !this.data.isShoucang;
        //将收藏状态取反
        this.setData({
            isShoucang
        });
        //判断 当前的收藏状态,如果为true  则那啥
        let shoucangList = wx.getStorageSync("shoucangList") || [];
        if (isShoucang) {
            //说明收藏了  将本商品添加至收藏列表
            shoucangList.push(this.data.goodsObjAll)
        } else {
            //说明取消了收藏
            let index = -1;
            //获取本商品的收藏列表的索引
            shoucangList.forEach((element, i) => {
                if (element.goods_id == this.data.goodsObjAll.goods_id) {
                    index = i;
                }
            });
            //在收藏列表删除本商品
            shoucangList.splice(index, 1);
        };
        //保存新的收藏列表数组
        wx.setStorageSync("shoucangList", shoucangList);
    },
    //处理点击图片放大预览功能
    handlePreviewImage(e) {
        //获取当前要预览的图片链接
        let current = e.currentTarget.dataset.url;
        //获取所有图片链接  组成的数组
        let urls = this.data.goodsObj.pics.map(value => value.pics_mid);
        wx.previewImage({
            current,
            urls
        });
    },
    //加入购物车功能  由于接口限制,我们用本地存储功能实现
    handleAddCart() {
        //获取缓存中的购物车 如果前面未定义就返回[]
        let cart = wx.getStorageSync("cart") || [];
        //判断当前商品是否存在于购物车  当前商品id     this.data.goodsObj.goods_id
        let index = cart.findIndex((item) => {
            if (item.goods_id == this.data.goodsObj.goods_id) return true
        });
        //判断index 并修改数组
        if (index == -1) { //原来购物车没有这个商品
            //加入这个商品
            cart.push({
                // goods_id: this.data.goodsObj.goods_id,
                ...this.data.goodsObjAll,
                num: 1,
                checked: true //默认勾选好
            });
            //弹窗了兄弟们
            wx.showToast({
                title: '加入购物车成功',
                icon: 'success',
                mask: true,
            });

        } else { //原来购物车有这个商品
            cart[index].num++
                wx.showToast({
                    title: '加入购物车成功',
                    icon: 'success',
                    mask: true,
                });
        }
        //修改数据完毕 需要重新 存储到本地
        wx.setStorageSync("cart", cart);
    }

})